package com.moliku.insurance.model.dto.pingan.standard;

import com.moliku.insurance.model.dto.InsuranceBaseParam;
import com.moliku.insurance.model.vo.InsuranceBaseVo;

import java.util.List;
import java.util.Map;

/**
 * 平安保险
 * @author way
 * @date 2021-03-05
 */
public class PingAnInsuranceParam implements InsuranceBaseParam {

    @Override
    public Class responseType() {
        return InsuranceBaseVo.class;
    }

    @Override
    public String url() {
        return "/open/appsvr/property/standardApplyPolicyRiskPropertyNoPay";
    }

    @Override
    public METHOD methodType() {
        return METHOD.POST;
    }

    @Override
    public FORMAT formatType() {
        return FORMAT.JSON;
    }

    /**
     *（非空）交易码，
     */
    private String TRAN_CODE;

    /**
     *（非空）银行代码，
     */
    private String BANK_COD;

    /**
     *（非空）交易流水号
     */
    private String BK_SERIAL;

    /**
     *（非空）平安帐务日期
     */
    private String PA_ACCT_DATE;

    /**
     *（非空）平安账务时间
     */
    private String PA_ACCT_TIME;

    /**
     *（可空）用于区分同个合作伙伴不同的出单账号(最长20字节)
     */
    private String PTP_CODE;

    /**
     *  保单销号信息(不需要销号时可空)
     */
    private PingAnDestroyBizNoParam destroyBizNo;


    /**
     * 不需要关注
     */
    private PingAnPolicySaleInfoParam policySaleInfo;


    /**
     * 保单基本信息非空
     */
    private PingAnPolicyBaseInfoParam policyBaseInfo;


    /**
     * 保单扩展信息
     */
    private PingAnPolicyExtendInfoParam policyExtendInfo;


    /**
     * 保单配送信息 目前是见费投保的时候淘宝用//可空
     */
    private PingAnPolicySendInfoParam policySendInfo;

    /**
     * insuranceApplicantInfo:map{投保人信息，个人投保单或者团体投保单两项需要为其他一项 非空
     */
    private Map<String,PingAnIndividualPersonnelInfoParam> insuranceApplicantInfo;


    /**
     * List层级信息列表，可包含1或n个subjectInfo，非空
     */
    private List<PingAnSubjectInfoParam> subjectInfo;

    /**
     * List组合产品列表，若是组合产品非空，可包含1或n个productInfo
     */
    private List<PingAnProductInfoParam> productInfo;


    /**
     * List险种列表，非空，可包含1或n个planInfo
     */
    private List<PingAnPlanInfoParam> planInfo;

    /**
     * 1个险种包含1或n个责任，非空，可包含1或n个dutyInfo
     */
    private List<PingAnDutyInfoParam> dutyInfo;


    private List<PingAnDutyFactorInfoParam> dutyFactorInfo;

    /**
     * insurantInfo List险种列表，非空，可包含1或n个planInfo
     */
    private List<PingAnInsurantInfoParam> insurantInfo;

    /**
     * beneficiaryInfo:List 受益人，可包含0或n个，可空
     */
    private List<PingAnBeneficiaryInfoParam>  beneficiaryInfo;

}
